/**
 * json扩展, 这些工具类方法注册到了全局对象JSON_UTIL中.
 */
;(function(winObj) {

    const WIN = winObj ? winObj : window;

    const VERSION = "v1.0";

    const JSON_UTIL = {
        version: function () {
            return VERSION;
        },
        /**
         * 功能: 判断字符串是否是json格式.
         * 说明:
         * - 不能直接通过JSON.parse方法是否抛出异常来辨别一个字符串是否为json的原因是:
         * <pre>
         * JSON.parse('123'); // 123
         * JSON.parse('{}'); // {}
         * JSON.parse('true'); // true
         * JSON.parse('"foo"'); // "foo"
         * JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
         * JSON.parse('null'); // null
         * </pre>
         * @param jsonString    字符串
         * @returns {boolean}   true: 是json, false: 不是json
         */
        isJson: function (jsonString) {
            if (typeof jsonString !== 'string') {
                return false;
            }
            try {
                var obj = JSON.parse(jsonString);
                if (typeof obj !== 'object') {
                    return false;
                }
                if ((obj ?? "") === "") {
                    return false;
                }
            } catch(e) {
                return false;
            }
            return true;
        }
    };

    WIN.JSON_UTIL = JSON_UTIL;

}.call(this));